import getConfig from 'config-lite'  //配置插件，通过识别环境变量调用不同的配置文件，默认读取config下面的default.js
import express from 'express' //调用express
import chalk from 'chalk' //设置控制台颜色的插件
//import db from './mongodb/db.js' //连接mongoosedb
import Router from './routes' //调用自定义路由方法
import path from 'path' //调用node.js自带的模块path
import cookieParser from 'cookie-parser' //能将http中的cookie解析并且赋值给req.cookies
import session from 'express-session' 
//import connectMongo from 'connect-mongo' //将session存储到硬盘上的mongodb实体数据库中 
import bodyParser from 'body-parser' //解析http post提交的字段并且将他们复制给req.body中
//import {localAdress as localIp} from './method/static' //获取当前服务器的localIP

const app = express() //创建express实例

const config = getConfig(__dirname).default //获取当前环境下的配置文件

app.all('*', (req, res, next) => { //允许跨域
    res.header("Access-Control-Allow-Origin", "*")  //这个可以修改成只允许某个站点访问
    res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With") 
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS") 
    res.header("Access-Control-Allow-Credentials", true)  //可以带cookies
    res.header("X-Powered-By", '3.2.1')
    if (req.method == 'OPTIONS') {
        res.send(200) 
    } else {
        next() 
    }
})

app.use(bodyParser.json()); // for parsing application/json 

app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

//const MongoStore = connectMongo(session) //调用connectMongo

app.use(cookieParser())   //调用cookieParser

// app.use(session({ //调用express-session
//     name: config.session.name,  //session-id 也就是cookie名称
//     secret: config.session.secret, //加密字符串
//     resave: false,  //是否每次请求都刷新cookie时间
//     saveUninitialized: false, //是否初始化session-id
//     cookie: config.session.cookie, //cookie
//     store: new MongoStore({ //存储session进mongodb
//         url: config.url
//     })
// }))


app.use(express.static('./public')) //访问public里面的静态资源

app.set('views', path.join(__dirname, 'views')) //指定存放ejs文件的文件夹

app.set('view engine', 'ejs') //调用ejs模版

Router(app) //注册路由

app.listen(config.port, () => { //开启服务器
    console.log(
        chalk.green(`成功监听端口!!`)
    )
    console.log(
        chalk.green(`后台接口本机地址：http://127.0.0.1:${config.port}`)
    )
   /* console.log(
        chalk.green(`后台接口局域网地址：http://${localIp}:${config.port}`)
    )*/
    
}) 

app.use((err, req, res, next)=>{ //服务器出问题时调用，返回500并给出提示
    console.error(err.stack)
    res.status(500).send('Something broke!')
})

